import os
import pandas as pd

"""
此代码主要功能是从指定目录读取多个Excel文件中的企业名称，去掉已存在的企业名称后，
按照每1万条企业名称分批生成新的Excel文件，并在文件中附上注意事项和示例。
最终生成的文件将被输出到预定的文件夹中，便于后续查询和使用。
"""

# 文件名称
base_name = "中原会4轮"
# 需要去除的数据文件
file_b_path = f'./data/{base_name}/空白.xlsx'
# 需要去除的数据文件路径
unique_names_df = pd.read_excel(file_b_path)
# 对需要去除的数据文件中的企业名称进行set去重
unique_names_set = set(unique_names_df['企业名称'])

# 所有的目标文件，输入路径
folder_path = f'./data/{base_name}/base'  # 修改为你的文件夹路径
# 输出路径
output_folder = f'./data/{base_name}/out'  # 输出文件夹路径
# 如果out文件不存在，则创建
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

all_data = pd.DataFrame()

# 循环base文件夹中的所有文件
for filename in os.listdir(folder_path):
    try:
        print(filename) # 输出当前处理的文件名
        # 构建新的路径
        file_path = os.path.join(folder_path, filename)
        # 读取Excel文件，并追加到all_data DataFrame中
        df = pd.read_excel(file_path, dtype=str)
        # 处理文件第一列数据
        df = df[[0]]
        # 使用concat函数合并all_data和df，连接后重新生成索引
        all_data = pd.concat([all_data, df], ignore_index=True)
    except:
        ...

# 去重，只保留在unique_names_set中的企业名称
# all_data[0].isin(unique_names_set)：这部分代码检查all_data DataFrame的第一列中的每个企业名称是否存在于unique_names_set集合中。
# isin()是一个Pandas函数，它会返回一个布尔值的Series，Series的每个元素对应于all_data DataFrame第一列中的每个企业名称，
# 如果该名称存在于unique_names_set中，则为True，否则为False。
all_data = list(set(all_data[~all_data[0].isin(unique_names_set)][0].to_list()))

# 每1万行生成一个新文件
chunk_size = 10000
num_chunks = len(all_data) // chunk_size + (len(all_data) % chunk_size > 0)

# AQC
new_data = [
    "批量查询",
    """注意事项：
    1. 上传文件，第一列为企业名称，表头使用『企业名称』
    2.  企业名称要与工商登记的名称完全一致
    3.  每次最多可查询10000家企业，文件大小不超过2MB
    4. 文件格式必须为Excel
    """,
    "企业名称（全名）", "示例：北京百度网讯科技有限公司"
]
# JXS
# new_data = [
#     "注意事项\n1. 模版的表头不可更改和删除；\n2. 企业名称需和工商登记的企业名称保持一致；\n3. 每次最多导入5000家企业，第5004行之后的企业将不被导入；\n4. 建议您修改模版的文件名，模版文件名将自动成为查询完成后的名单名称。",
#     "企业全称"
# ]
for i in range(0, num_chunks):
    start_idx = i * chunk_size
    end_idx = (i + 1) * chunk_size
    res_data = new_data.copy()
    res_data.extend(all_data[start_idx:end_idx])
    chunk = pd.DataFrame(res_data, columns=['批量查询'])
    # output_file = os.path.join(output_folder, f'爱企查-山东植保_{i + 22}.xlsx')
    output_file = os.path.join(output_folder, f'爱企查-{base_name}_{i + 1}.xlsx')
    chunk.to_excel(output_file, index=False)

print("文件处理完成！")
